package com.jy.oms.framework.asyn.task.handler;


import com.jy.oms.framework.asyn.task.model.TaskGroup;
import com.jy.oms.framework.asyn.task.model.TaskHandlerWrapper;

import java.util.List;
import java.util.Map;

/**
 * 任务管理器
 *
 * @author liuquan
 */
public interface ITaskHandlerManager {

    /**
     * 注册任务处理器
     *
     * @param taskCode    任务编码
     * @param taskHandler TaskHandlerWrapper
     */
    void registTaskHandler(String taskCode, TaskHandlerWrapper taskHandler);

    /**
     * 获取任务处理器
     *
     * @param taskCode 任务编码
     */
    TaskHandlerWrapper loadTaskHandler(String taskCode);

    /**
     * 获取所有可运行的任务
     */
    Map<TaskGroup, List<TaskHandlerWrapper>> loadAllExecutableTaskHandler();

    /**
     * 获取任务组数量
     */
    int getExecutableTaskGroupNum();
}
